/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tesis.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import tesis.controller.util.ConvertBeanUtil;
import tesis.domain.Usuario;
import tesis.domain.dto.CargoDTO;
import tesis.domain.dto.UsuarioDTO;
import tesis.service.CargoService;
import tesis.service.UsuarioService;
import tesis.utils.EstadosAI;
/**
 *
 * @author hugo
 */
@Controller(value="usuarioController")
@RequestMapping(value="/usuario")
public class UsuarioController {
    private final static Logger LOG=LoggerFactory.getLogger(UsuarioController.class);
    @Inject 
    private UsuarioService usuarioService;
    @Inject
    private CargoService cargoService;        
    
    
      @RequestMapping(value="/usuarios",method= RequestMethod.GET)
        public String usuarios(Model model){
            UsuarioDTO usuarioDTO=new UsuarioDTO();
            LOG.info("Procesando GET  para /usuarios");
            model.addAttribute("usuarioDTO", usuarioDTO);
            return "seguridad/usuarios";
        }
    
    @RequestMapping(value="/crearUsuarios",method= RequestMethod.GET)
    public String crearUsuarios(Model model, @RequestParam(required=false) Integer idusuario){
        UsuarioDTO usuarioDTO=new UsuarioDTO();
 
        List<CargoDTO> lstcargoDTO = null;
        lstcargoDTO = cargoService.find(new CargoDTO());
        LOG.info("Procesando GET  para /Usuario");
        if (idusuario!=null){
            usuarioDTO= usuarioService.findById(idusuario);
        }
        model.addAttribute("usuarioDTO", usuarioDTO);
        model.addAttribute("lstEstados", EstadosAI.getEstados());
        model.addAttribute("lstcargoDTO", lstcargoDTO);
        return "seguridad/usuario";
    }
    
    
    @RequestMapping(value="/eliminarUsuarios",method= RequestMethod.GET)
    @ResponseBody
    public Map eliminarUsuarios(Model model, UsuarioDTO usuarioDTO){
        Map map=new HashMap();
         boolean exito=false;
        LOG.info("Procesando POST para /grabarUsuario");
    
        exito = usuarioService.eliminar(usuarioDTO);
        
        map.put("error", exito);//se podria necesitar...
        return map;
    }
    
    
    
    
    
     @RequestMapping(value="/verUsuarios",method= RequestMethod.GET)
    public String verUsuarios(Model model, @RequestParam(required=false) Integer idusuario){
        UsuarioDTO usuarioDTO=new UsuarioDTO();
        LOG.info("Procesando GET  para /Usuario");
        if (idusuario!=null){
            usuarioDTO= usuarioService.findById(idusuario);
        }
        model.addAttribute("usuarioDTO", usuarioDTO);
        return "seguridad/usuario_ver";
    }
    
    
    @RequestMapping(value="/grabarUsuario",method= RequestMethod.POST)
    @ResponseBody
    public Map grabarUsuario(Model  model,UsuarioDTO usuarioDTO){
             Map map=new HashMap();
        Usuario usuario = null;
        LOG.info("Procesando POST para /grabarUsuario");
        usuario=ConvertBeanUtil.convertUsuarioDTOtoEntity(usuarioDTO);
        usuario=usuarioService.grabar(usuario);
        map.put("idUsuario", usuario.getIdusuario());//se podria necesitar...
        return map;
    }
    
    
    @RequestMapping(value="/findUsuarios",method= RequestMethod.GET)
    @ResponseBody
    public Map findUsuarios(UsuarioDTO usuarioDTO ){
        Map map=new HashMap();
        List<UsuarioDTO> lstUsuariosDTO=null;
        LOG.info("Procesando GET para  /findUsuarios");
        lstUsuariosDTO = usuarioService.find(usuarioDTO);
        map.put("lstUsuariosDTO", lstUsuariosDTO);
        map.put("totalRecords", usuarioService.cantidadUsuarios(usuarioDTO));
        map.put("startIndex", usuarioDTO.getStartIndex());
        
        return map;
    }
    
    
    
}
